package itheima.zuoye.Test5;

import java.util.*;
import java.util.stream.Collectors;
// //全球
//    //    第1名：《肖生克的救赎》，豆瓣评分：9.7
//    //　　第2名：《霸王别姬》豆瓣评分：9.6
//    //　　第3名：《阿甘正传》，豆瓣评分：9.6
//    //　　第5名：《辛德勒的名单》豆瓣评分：9.6
//    //　　第5名：《美丽人生》豆瓣评分：9.5
//    //　　第6名：《千与千寻》，豆瓣评分：9.4
//    //　　第7名：《泰坦尼克号》，豆瓣评分：9.4
//    //　　第8名：《这个杀手不太冷》，豆瓣评分：9.4
//    //　　第9名：《忠犬八公的故事》，豆瓣评分：9.4
//    //　　第10名：《盗梦空间》，豆瓣评分：9.3
//    //
//    //华人
//    //　  第1名：《阳光普照》，豆瓣评分：8.5
//    //　　第2名：《气球》豆瓣评分：7.9
//    //　　第3名：《拆弹专家2》，豆瓣评分：7.9
//    //　　第4名：《一秒钟》，豆瓣评分：7.8
//    //　　第5名：《送你一朵小红花》豆瓣评分：7.5
//    //　　第6名：《金都》，豆瓣评分：7.7
//    //　　第7名：《叔叔》，豆瓣评分：7.7
//    //　　第8名：《八佰》，豆瓣评分：7.6
//    //　　第9名：《夺冠》，豆瓣评分：7.3
//    //　　第10名：《我和我的家乡》，豆瓣评分：7.3
public class Test1 {
    public static void main(String[] args) {
        // 1. 创建两个 Map 集合存储影片名和豆瓣评分

        Map<String, Double> globalFilms = new LinkedHashMap<>();
        globalFilms.put("肖申克的救赎", 9.7);
        globalFilms.put("霸王别姬", 9.6);
        globalFilms.put("阿甘正传", 9.6);
        globalFilms.put("辛德勒的名单", 9.6);
        globalFilms.put("美丽人生", 9.5);
        globalFilms.put("千与千寻", 9.4);
        globalFilms.put("泰坦尼克号", 9.4);
        globalFilms.put("这个杀手不太冷", 9.4);
        globalFilms.put("忠犬八公的故事", 9.4);
        globalFilms.put("盗梦空间", 9.3);


        Map<String, Double> chineseFilms = new LinkedHashMap<>();

        chineseFilms.put("阳光普照", 8.5);
        chineseFilms.put("气球", 7.9);
        chineseFilms.put("拆弹专家2", 7.9);
        chineseFilms.put("一秒钟", 7.8);
        chineseFilms.put("送你一朵小红花", 7.8);
        chineseFilms.put("金都", 7.7);
        chineseFilms.put("叔叔", 7.7);
        chineseFilms.put("八佰", 7.6);
        chineseFilms.put("夺冠", 7.3);
        chineseFilms.put("我和我的家乡", 7.3);


        // 2. 通过流的方式实现要求

        // 1）打印全球影片排行榜中的前三甲影片名
        System.out.println("全球影片排行榜中的前三甲影片名:");
        globalFilms.entrySet().stream()
                .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
                .limit(3)
                .forEach(entry -> System.out.println(entry.getKey()));

        // 2）打印华人影片排行榜中倒数 5 名的影片名
        System.out.println("华人影片排行榜中倒数 5 名的影片名:");
        chineseFilms.entrySet().stream()
                .sorted(Map.Entry.comparingByValue())
                .limit(5)
                .forEach(entry -> System.out.println(entry.getKey()));

        // 3）将两个排行榜中的前 5 名挑出来共同存入新的集合
        List<Map.Entry<String, Double>> topGlobal = globalFilms.entrySet().stream()
                .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
                .limit(5)
                .collect(Collectors.toList());

        List<Map.Entry<String, Double>> topChinese = chineseFilms.entrySet().stream()
                .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
                .limit(5)
                .collect(Collectors.toList());

        List<Map.Entry<String, Double>> combinedTop = new ArrayList<>(topGlobal);
        combinedTop.addAll(topChinese);

        // 4）定义电影 Film 类(属性：电影名，评分)，将上面新集合中的数据，封装到 Film 对象中
        List<Film> films = combinedTop.stream()
                .map(entry -> new Film(entry.getKey(), entry.getValue()))
                .collect(Collectors.toList());

        // 打印 Film 对象列表
        System.out.println("封装到 Film 对象中的数据:");
        films.forEach(film -> System.out.println(film));
    }
}
